package com.uujava.minibox.gui;

import java.awt.*;
import java.util.ArrayList;

import javax.swing.*;


import com.mxcyk.serviceLogic.*;
import com.uujava.minibox.ui.button.ImageJButton;
import com.uujava.minibox.ui.panel.ImagePane;

/**该类为Minibox提供 上、下、左；工具篮列表
 * 工能：以横向为纵向排列显示ImageJButton[] 
 * 使用方法：
 * 		应用列表的路径，水平还是垂直，水平间隙，垂直间隙, 按钮的宽度，按钮的高度
 * Line(String Path,char x_or_y_axis,int hgap, int vgap,int width,int height)
 * @see org.k.GUI.Line;
 * @author k 日期：2013年5月19日 09:36:21
 * 
 */
public class Line extends ImagePane {
	BoxLayout box;
	ImageJButton[] jbs;
	ArrayList<Appfile> appfile;
	// 显示模式 垂直，水平
	public final static char Y_AXIS = 0;
	public final static char X_AXIS = 1;

	/**
	 * 功能：该类为创建一个(横||竖)的的工具按钮列表
	 * 
	 * @param makels为应用程序所在的目录地址
	 * @param x_or_y_axis
	 *            为应用列表显示的方式是横排还是竖排
	 * @param int hgap
	 * 				水平垂直的间隙大小 hgap - 组件之间以及组件与 Container 的边之间的水平间隙
	 * @param int vgap
	 *        		vgap - 组件之间以及组件与 Container 的边之间的垂直间隙
	 *@param width
	 *            按钮宽度
	 *@param height
	 *            按钮高度
	 */
	public Line(String Path, char x_or_y_axis, int hgap, int vgap, int width,
			int height) {
		setOpaque(false);//设置背景透明
		
		if (x_or_y_axis == Y_AXIS) {// 垂直显示
			this.setLayout(new VerticalFlowLayout(VerticalFlowLayout.TOP, hgap,
					vgap, false, false));
		} else {// 水平显示
			this.setLayout(new FlowLayout(FlowLayout.LEFT, hgap, vgap));
		}
		FileList getapp=new FileList(Path);
		MakeFileLise mfl = getapp.getApp();
		appfile = mfl.getLs();
		jlsInitialize(appfile, jbs, this, width, height, "");

	}

	/**
	 * 功能：生成ImageJButton列表
	 * 
	 * @param FileList
	 *            为Appfile类数组
	 * @param jbs
	 *            为对应按钮数组
	 * @param jp2
	 *            jls数组所管理的容器类
	 *@param width
	 *            按钮宽度
	 *@param height
	 *            按钮高度
	 * @param Card
	 *            该数据集合的身份标志
	 */
	private void jlsInitialize(ArrayList<Appfile> FileList, ImageJButton[] jbs,
			JPanel jp2, int width, int height, String Card) {
		GetAction getaction = new GetAction(FileList);// 监听类并把应用数组传入
		// 判断是否有这三个目录如果没有就创建
		new FindFolder();
		// =================================================================================
		int size=FileList.size();
		jbs = new ImageJButton[size];
		for (int i = 0; i <size; i++) {// 列表
			jbs[i] = new ImageJButton(FileList.get(i).getAppIcon(), width, height);
			jbs[i].setToolTipText(FileList.get(i).getAppName());// 当鼠标移动到按钮上显示的提醒
			jbs[i].addMouseListener(getaction);// 监听每一个list
			jbs[i].setName(Card + " " + i);// 设置控件的名字为为监听者准备
			jp2.add(jbs[i]);
		}
	}
	//======================================================================================================

	public static void main(String[] args) {
		new FindFolder();// 判断是否有这三个目录如果没有就创建
		String Path = System.getProperty("user.dir");// 获得当前路径
		Path = Path + "\\上";
		JFrame jf = new JFrame();
		Line line = new Line(Path, Line.X_AXIS, 5, 5, 20, 20);
		
		line.setBackImage("/Skins/ToolBarBackground.png");//设置背景图片
		line.setOpaque(true);
		jf.add(line);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设定窗体关闭后自动退出进程
		jf.setSize(60, 600);
		jf.setVisible(true);
	}
}
